const { result } = require("@hapi/joi/lib/base");
const db = require("../../db/index");
const bcrypt = require("bcryptjs");
// 获取用户信息
const getUserinfo = (req, res) => {
  // 注意：req 对象上的 user 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  const sql = `select id, username, nickname, email, user_pic from en_users where
  id=?`;
  db.query(sql, req.user.id, (err, result) => {
    if (err) return res.cc(err);
    if (result.length !== 1) return res.cc("获取用户信息失败");
    res.send({
      status: 0,
      message: "获取用户基本信息成功",
      data: result[0],
    });
  });
};
// 修改用户基本信息
const updateUserInfo = (req, res) => {
  const sql = `update en_users set ?where id=?`;
  db.query(sql, [req.body, req.body.id], (err, result) => {
    if (err) return res.cc(err);
    if (result.affectedRows !== 1) return res.cc("修改用户基本信息失败");
    return res.cc("修改用户基本信息成功");
  });
};
// 充值密码
const updatePassword = (req, res) => {
  const sql1 = `select * from en_users where id=?`;
  db.query(sql1, req.user.id, (err, result) => {
    if (err) return res.cc(err);
    if (result.length !== 1) return res.cc("用户不存在");
    const compareResults = bcrypt.compareSync(
      req.body.oldPwd,
      result[0].password
    );
    if (!compareResults) return res.cc("原密码错误");
  });
  const sql2 = `update en_users set password=? where id=?`;
  const newPwd = bcrypt.hashSync(req.body.newPwd, 10);
  db.query(sql2, [newPwd, req.user.id], (err, result) => {
    if (err) return res.cc(err);
    if (result.affectedRows !== 1) return res.cc("更新密码失败");
    res.cc("更新密码成功", 0);
  });
};
// 更新用户头像
const updateAvartar = (req, res) => {
  const sql = `update en_users set user_pic=?where id=?`;
  db.query(sql, [req.body.avatar, req.user.id], (err, result) => {
    if (err) return res.cc(err);
    if (result.affectedRows !== 1) return res.cc("更新头像失败");
    return res.cc("更新头像成功", 0);
  });
};
module.exports = {
  getUserinfo: getUserinfo,
  updateUserInfo: updateUserInfo,
  updatePassword: updatePassword,
  updateAvartar: updateAvartar,
};
